# 如果一个类继承多个父类，优先继承第一个父类的同名属性和方法
# 通过子类的mro()方法 __mro__属性 查看父类的先后顺序
# MRO(Method Resolution Order)：方法解析顺序

# 1 定义师父类 Master
# 1.1 定义init初始化 kongfu
# 1.2 定义 make_cake
# 2 定义HeimaSchool类 /kongfu /make_cake
# 3 定义徒弟类 继承Master HeimaSchool
# 4 实例化徒弟类 Prentice, 调用属性/调用方法
# 5 通过子类的mro()方法 __mro__属性 查看父类的先后顺序


# 1 定义师父类
class Master(object):
    # 1.1 init
    def __init__(self):
        self.kongfu = '[传统方法]'

    # 1.2 摊煎饼方法 make_cake
    def make_cake(self):
        print(f'使用{self.kongfu}摊煎饼')


# 2 定义黑马学校类
class HeimaSchool(object):
    def __init__(self):
        self.kongfu = '[AI方法]'

    def make_cake(self):
        print(f'使用{self.kongfu}摊煎饼')


# 2 定义徒弟类 Prentice
# class Prentice(Master, HeimaSchool):
class Prentice(HeimaSchool, Master):
    pass

# 3 测试继承
xiaoming = Prentice()
xiaoming.make_cake()
print(xiaoming.kongfu)

print('---------------------------')
# 4 探究:python解释器是如何支持 资源的调用顺序
print(Prentice.__mro__)
print(Prentice.mro())



